/**
 * @author (Yiming Yung & Thomas Oosterloo) 
 * @version (0.2)
 */
public class Persoon
{
    // De te gebruiken velden.
    private int bsn;
    private String voornaam;
    private String achternaam;
    private char geslacht;
    private int dag;
    private int maand;
    private int jaar;

    /**
     * Constructor for objects of class Persoon
     */
    public Persoon(int burgerservicenummer, String firstname, String lastname, int geboortedag, int geboortemaand, int geboortejaar, char gender){
        // Initialiseer instantievariabelen.
        bsn = burgerservicenummer;
        voornaam = firstname;
        achternaam = lastname;
        setGeboorteDatum(geboortedag, geboortemaand, geboortejaar);
        setGeslacht(gender);
    }
    
    /**
     * getter voor BSN
     * @return bsn
     */
    public int getBSN(){
        return bsn;
    }
    
    /**
     * getter voor voornaam
     * @return voornaam
     */
    public String getVoornaam(){
        return voornaam;
    }
    
    /**
     * getter voor achternaam
     * @return achternaam
     */
    public String getAchternaam(){
        return achternaam;
    }
    
    /**
     * setter voor bsn
     */
    public void setBSN(int burgerservicenummer){
        bsn = burgerservicenummer;
    }
    
    /**
     * setter voor voornaam
     */
    public void setVoornaam(String firstname){
        voornaam = firstname;
    }
    
    /**
     * setter voor achternaam
     */
    public void setAchternaam(String lastname){
        achternaam = lastname;
    }
    
    /**
     * setter voor geslacht
     */
    public void setGeslacht(char gender){
         /**
         * Test of de geslacht man(m/M) of vrouw(v/V) is.
         */
        if(gender == 'M' || gender == 'm' || gender == 'v' || gender == 'V'){
            geslacht = gender;
        } else {
            geslacht = 'O';
        }
    }
    
    /**
     * setter voor geboortedatum
     */
    public void setGeboorteDatum(int geboortedag, int geboortemaand, int geboortejaar){
         /**
         * Test of de geboortedag geldig is.
         * Zo niet word de variabele 'fout' 1.
         */
        int fout;
        fout = 0;
        
        if(geboortedag >= 1 && geboortedag < 32){
        } else {
            fout = 1;
        }
        
        /**
         * Test of de geboortemaand geldig is.
         * Zo niet word de variabele 'fout' 1.
         */
        if(geboortemaand >= 1 && geboortemaand < 13){
        } else { 
            fout = 1;
        }
        /**
         * Test of de geboortejaar geldig is.
         * Zo niet word de variabele 'fout' 1.
         */
        if(geboortejaar >= 1900 && geboortejaar <= 2100){
        } else {
            fout = 1;
        }
        /**
         * Test of de combinatie tussen dag en maand kloppen.
         * Zo niet wordt 'uitkomst' 0.
         */
        if(fout == 0){
            if(geboortemaand == 1 || geboortemaand == 3 || geboortemaand == 5 || geboortemaand == 7 || geboortemaand == 8 || geboortemaand == 10 || geboortemaand == 12){
                if(geboortedag <= 31){
                } else { 
                    fout = 1;
                }
            }
            if(geboortemaand == 2){
                if(geboortedag <= 28){
                } else { 
                    fout = 1;
                }
            }
            if(geboortemaand == 4 || geboortemaand == 6 || geboortemaand == 9 || geboortemaand == 11){
                if(geboortedag <= 30){
                } else {
                    fout = 1;
                }
            }
            
        }
        
        if(fout == 1){
            dag = 0;
            maand = 0;
            jaar = 0;
        } else {
            dag = geboortedag;
            maand = geboortemaand;
            jaar = geboortejaar;
        }
    }
   
    /**
    * Getter voor geboortedatum
    * @return Geboortedatum
    */
    public String getGeboorteDatum(){
        String temp;
        if (dag == 0 && maand == 0 && jaar == 0)
        {
            temp="Onbekend";
        }
        else
        {
            temp=dag + "-" + maand + "-" + jaar;
        }
        return temp;
    }
    
    /**
     * Getter voor geslacht
     * @return geslacht
     */
    public String getGeslacht(){
        if(geslacht == 'm' || geslacht == 'M'){ return "Man";}
        if(geslacht == 'v'|| geslacht == 'V'){ return "Vrouw";}
        return "Onbekend";
    }
    
    /**
    * Methode om dienblad te koppelen aan een persoon
    * @param dienblad
    */
    public void pakDienblad(Dienblad dienblad)
    {
    //...
    }
    
    /**
     * Druk alle persoonlijke gegevens af
     */
    public void drukAf(){   
            System.out.println("************************      "); 
            System.out.println("* Burgerservicenummer:" + getBSN());
            System.out.println("* Voornaam:" + getVoornaam());
            System.out.println("* Achternaam:" + getAchternaam());
            System.out.println("* Geboortedatum:" + getGeboorteDatum());
            System.out.println("* Geslacht:" + getGeslacht());
            System.out.println("************************      ");
    }
}